Jupyterノートブックプロット¶
Juptyer ノートで pyvista でインタラクティブにプロット!
panel を使ったデモ¶
from pyvista import demos
demos.plot_logo(background='white', jupyter_backend='panel')
ipygany を使ったデモ¶
from pyvista import demos
# basic glyphs demo
mesh = demos.glyphs(2)
text = demos.logo.text_3d("I'm interactive!", depth=0.2)
text.points *= 0.1
text.translate([0, 1.4, 1.5])
mesh += text
mesh['Example Scalars'] = mesh.points[:, 0]
mesh.plot(cpos='xy', jupyter_backend='ipygany', background='white',
show_scalar_bar=True)
サポートされるモジュール¶
PyVistaモジュールは,Jupyterノートブック内でプロットする際のさまざまなバックエンドをサポートしています:
ipyvtklink を介したノートブックへのPyVistaストリーミングによるサーバ側のレンダリング
threejsを使用した ipygany によるクライアント側レンダリング.vtk.jsを使用した panel を使用したクライアント側レンダリング.itk.jsとvtk.jsを使用した itkwidgets によるクライアント側レンダリング.静止画像.
各バックエンドの詳細¶
これらの描画バックエンドの使用方法の詳細については,各バックエンドの個々のパッケージページを参照してください.
3 D対話型Jupyterlabプロットの状態¶
注釈
Jupyterノートブック内の3 Dプロットは,Jupyterがまだ比較的新しい技術であることもありますが,ここで使用されているWeb技術も新しい技術であり,ますます多くのユーザや開発者がクラウドやクラウドベースのビジュアライゼーションに移行しているため,急速に発展しています.ここにあるものは壊れ,急速に変化する可能性が高いです
これは2021年3月に書かれたもので,すでに時代遅れかもしれません.変更については,開発者のWebサイトを確認してください.
Jupyterlabを使用してプロットする場合は,多数のモジュールのいずれかを使用することもできますが,それぞれに長所,短所,および短所があります. pyvista は Plotting クラスを使用するときにAPIの違いのいくつかを取り除こうとしますが,プロットはバックエンドによって異なるように見えます.また,バックエンドが異なると要件も異なり,展開環境をサポートしない場合があります.
次の表に,jupyterノートブックプロットモジュールで使用されるさまざまな機能とテクノロジを示します.
Jupyterノートブック3 Dモジュール |
||||
Jupyterlab 3 |
レンダリングの場所 |
バックエンド |
フレームバッファが必要 |
|
panel |
Yes |
クライアント |
vtk.js |
Yes |
ipygany |
Yes |
クライアント |
threejs |
いいえ |
ipyvtklink |
Yes |
サーバ |
vtk |
Yes |
itkwidgets |
いいえ |
クライアント |
vtk.js |
Yes |
現時点では, itkwidgets と ipyvtklink はJupyterlab 3と互換性がなく,juptyerから "Error displaying widget: model not found" メッセージが送信されます.さらに ipygany 以外のモジュールはすべてフレームバッファを必要とします.これは pyvista.start_xvfb() を使ったヘッドレス環境で設定できます.しかし,システムパッケージをインストールできないGoogle Colabでは, threejs のようなサーバ側のレンダリングやフレームバッファを必要としないモジュールを使うべきです.
フレームバッファを必要とするバックエンドのためのヘッドレス環境へのインストールの詳細については, インストール を参照してください.個々のパッケージをインストールする場合,簡単な pip install <package> を使用してJupyterlab 3互換パッケージをインストールできます.詳細は,他のパッケージのインストール手順を参照してください.
PyVistaでの使用法¶
Jupyterプロットバックエンドを設定する方法は2つあります.まず, jupyter_backend を mesh.plot() または plotter.show() に設定することで,プロット単位で実行できます.また, pyvista.set_jupyter_backend 関数を使用してグローバルに設定することもできます.詳細については,次を参照してください.
- pyvista.set_jupyter_backend(backend)¶
Jupyterノートブックのプロットバックエンドを設定します.
- パラメータ
backend (str) -- プロット時に使用するJupyterバックエンドです.次のいずれかである必要があります:*
'ipyvtklink': リモートでレンダリングし,結果のVTKイメージをクライアントにストリーミングします.すべてのVTKメソッドをサポートしますが,リモートレンダリングのために遅延が発生します.ヘッドレスサーバーで表示する場合は,仮想フレームバッファをセットアップする必要があります.ipyvtklinkがインストールされている必要があります. *'panel': VTKレンダーウィンドウをvtkjsオブジェクトに変換し,それをjupyterlabで視覚化します.ほとんどのVTKオブジェクトをサポートします.ヘッドレスサーバーで表示する場合は,仮想フレームバッファをセットアップする必要があります.panelがインストールされている必要があります. *'ipygany': すべてのメッシュipyganyメッシュに変換し,クライアント側でレンダリングするメッシュをストリーミングします.VTKメッシュをサポートしていますが,他にはほとんどありません.noneを除き,これは仮想フレームバッファを必要としない唯一の方法です.ipyganyがインストールされている必要があります.'static': Jupyterlab環境内に単一の静的イメージを表示します.ヘッドレスサーバーで表示する場合も仮想フレームバッファをセットアップする必要がありますが,追加のモジュールをインストールする必要はありません. *'none': jupyterlab内にプロットを表示せず,専用のVTKレンダリングウィンドウを使用して表示します.これは,仮想フレームバッファがあっても,ヘッドレスサーバー上では何も生成しません.
サンプル
ipygany バックエンドを有効にします.
>>> import pyvista as pv >>> pv.set_jupyter_backend('ipygany')
panelバックエンドを有効にします.
>>> pv.set_jupyter_backend('panel')
ipyvtklink バックエンドを有効にします.
>>> pv.set_jupyter_backend('ipyvtklink')
静止画像を表示するだけです.
>>> pv.set_jupyter_backend('static')
JupyterLab内のすべてのプロットを無効にし,準のデスクトップVTKレンダリングウィンドウを使用して表示します.
>>> pv.set_jupyter_backend(None) # or 'none'